export const KeyboardCodes: Map<string, number> = new Map([
  ['KeyA', 4],
  ['KeyB', 5],
  ['KeyC', 6],
  ['KeyD', 7],
  ['KeyE', 8],
  ['KeyF', 9],
  ['KeyG', 10],
  ['KeyH', 11],
  ['KeyI', 12],
  ['KeyJ', 13],
  ['KeyK', 14],
  ['KeyL', 15],
  ['KeyM', 16],
  ['KeyN', 17],
  ['KeyO', 18],
  ['KeyP', 19],
  ['KeyQ', 20],
  ['KeyR', 21],
  ['KeyS', 22],
  ['KeyT', 23],
  ['KeyU', 24],
  ['KeyV', 25],
  ['KeyW', 26],
  ['KeyX', 27],
  ['KeyY', 28],
  ['KeyZ', 29],

  ['RusA', 4],
  ['RusB', 5],
  ['RusC', 6],
  ['RusD', 7],
  ['RusE', 8],
  ['RusF', 9],
  ['RusG', 10],
  ['RusH', 11],
  ['RusI', 12],
  ['RusJ', 13],
  ['RusK', 14],
  ['RusL', 15],
  ['RusM', 16],
  ['RusN', 17],
  ['RusO', 18],
  ['RusP', 19],
  ['RusQ', 20],
  ['RusR', 21],
  ['RusS', 22],
  ['RusT', 23],
  ['RusU', 24],
  ['RusV', 25],
  ['RusW', 26],
  ['RusX', 27],
  ['RusY', 28],
  ['RusZ', 29],

  ['RusBracketLeft', 47],
  ['RusBracketRight', 48],
  ['RusBackslash', 49],
  ['RusSemicolon', 51],
  ['RusQuote', 52],
  ['RusComma', 54],
  ['RusPeriod', 55],
  ['RusSlash', 56],

  ['Digit1', 30],
  ['Digit2', 31],
  ['Digit3', 32],
  ['Digit4', 33],
  ['Digit5', 34],
  ['Digit6', 35],
  ['Digit7', 36],
  ['Digit8', 37],
  ['Digit9', 38],
  ['Digit0', 39],

  ['Enter', 40],
  ['Escape', 41],
  ['Backspace', 42],
  ['Tab', 43],
  ['Space', 44],
  ['Minus', 45],
  ['Equal', 46],
  ['BracketLeft', 47],
  ['BracketRight', 48],
  ['Backslash', 49],
  ['IntlBackslash', 49],
  ['Backquote_azerty', 100],

  ['Semicolon', 51],
  ['Quote', 52],
  ['Backquote', 53],
  ['KeyTilde', 53],
  ['Comma', 54],
  ['Period', 55],
  ['KeyDot', 55],
  ['Slash', 56],
  ['CapsLock', 57],

  ['F1', 58],
  ['F2', 59],
  ['F3', 60],
  ['F4', 61],
  ['F5', 62],
  ['F6', 63],
  ['F7', 64],
  ['F8', 65],
  ['F9', 66],
  ['F10', 67],
  ['F11', 68],
  ['F12', 69],
  ['F13', 70],

  ['PrintScreen', 70],
  ['ScrollLock', 71],
  ['Pause', 72],
  ['Insert', 73],
  ['Home', 74],
  ['PageUp', 75],
  ['Delete', 76],
  ['End', 77],
  ['PageDown', 78],
  ['ArrowRight', 79],
  ['ArrowLeft', 80],
  ['ArrowDown', 81],
  ['ArrowUp', 82],

  ['NumLock', 83],
  ['NumpadDivide', 84],
  ['NumpadMultiply', 85],
  ['NumpadSubtract', 86],
  ['NumpadAdd', 87],
  ['NumpadEnter', 88],
  ['Numpad1', 89],
  ['Numpad2', 90],
  ['Numpad3', 91],
  ['Numpad4', 92],
  ['Numpad5', 93],
  ['Numpad6', 94],
  ['Numpad7', 95],
  ['Numpad8', 96],
  ['Numpad9', 97],
  ['Numpad0', 98],
  ['NumpadDecimal', 99],
  ['KeyKpDot', 99],

  ['Menu', 118],

  ['ControlLeft', 224],
  ['ShiftLeft', 225],
  ['AltLeft', 226],
  ['MetaLeft', 227],
  ['ControlRight', 228],
  ['ShiftRight', 229],
  ['AltRight', 230],
  ['MetaRight', 231]
]);

export const ModifierCodes: Map<string, number> = new Map([
  ['ControlLeft', 1],
  ['ShiftLeft', 2],
  ['AltLeft', 4],
  ['MetaLeft', 8],
  ['ControlRight', 16],
  ['ShiftRight', 32],
  ['AltRight', 64],
  ['MetaRight', 128]
]);
